package com.zfzs.post.common.security;

import com.zfzs.post.common.bean.ResponseCode;
import com.zfzs.post.common.bean.WriterResult;
import com.zfzs.post.common.bean.ResponseCode;
import com.zfzs.post.common.bean.WriterResult;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.AuthenticationEntryPoint;
import org.springframework.stereotype.Component;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.Serializable;

@Component
public class JwtAuthenticationEntryPoint implements AuthenticationEntryPoint, Serializable {

    private static final long serialVersionUID = -8970718410437077606L;

    @Override
    public void commence(HttpServletRequest request,
                         HttpServletResponse response,
                         AuthenticationException authException) throws IOException {
        /**
         * 当用户尝试访问安全的REST资源而不提供任何凭据时，将调用此方法发送401 响应
         */
        //错误码
        Object code = request.getAttribute("code");
        //错误信息
        Object msg = request.getAttribute("msg");
        if(code == null){
            code = ResponseCode.NOT_AUTHORIZATION_ERROR.code;
            msg = ResponseCode.NOT_AUTHORIZATION_ERROR.msg;
        }
        WriterResult.writerResponse(response, code.toString(), msg.toString());
        //response.sendError(HttpServletResponse.SC_UNAUTHORIZED, authException==null?"Unauthorized":authException.getMessage());
    }
}
